// 数组栈类
export class ArrayStack<T>{
    private stack: T[];
    // 构造函数
    constructor() {
        this.stack = [];
    }
    // 入栈方法
    push(item: T) {
        this.stack.push(item);
    }
    // 出栈方法
    pop(): T | undefined {
        return this.stack.pop();
    }
    // 返回栈顶元素
    peek(): T | undefined {
        return this.stack[this.stack.length - 1];
    }
    // 判断栈顶是否为空
    isEmpty(): boolean {
        return this.stack.length === 0;
    }
    // 清空栈
    clear() {
        this.stack = [];
    }
    // 获取栈内的数量
    size(): number {
        return this.stack.length;
    }
    // 栈内元素字符串化
    stringfy(): string {
        return this.stack.join('');
    }
}

// 测试用例
const stack = new ArrayStack<number>();
// 入栈
stack.push(1);
stack.push(2);

// 出栈
console.log(stack.pop());

// 返回栈顶元素
console.log(stack.peek());

// 查看栈大小
console.log(stack.size());

// 判断栈是否为空
console.log(stack.isEmpty());

// 返回栈内所有元素
console.log(stack.stringfy())

// 清空栈
stack.clear()
console.dir(stack);
